<?php
class Candidato extends BaseModel {
	
	protected $candidatoid;
	protected $nome;
	protected $endereco;
	protected $numero;
	protected $bairro;
	protected $cep;
	protected $complemento;
	protected $naturalidade;
	protected $nacionalidade;
	protected $filiacaopai;
	protected $filiacaomae;
	protected $nascimento;
	protected $sexo;
	protected $escolaridadeid;
	protected $rg;
	protected $emissaorg;
	protected $orgaorg;
	protected $cpf;
	protected $carteiratrabalho;
	protected $serie;
	protected $tituloeleitor;
	protected $zona;
	protected $secao;
	protected $pispasep;
	protected $deficiente;
	protected $deficiencia;
	protected $contato;
	protected $situacao;
	protected $telefone2;
	
	
	const tablename = "candidato";
    const tablekey = "candidatoid";
    const tablesequence = "candidato_candidatoid_seq";
	
    public function salvar()
    {
    	
    	$this->contato = TUtils::FoneToNum( $this->contato );
    	$this->telefone2 = TUtils::FoneToNum( $this->telefone2 );
    	# $this->cep = TUtils::CepToNum( $this->cep );
    	
    	$this->cpf = TUtils::CpfToNum( $this->cpf );
    	
    	if ( $this->situacao == NULL )
    	    $this->situacao = 'N';
    	
    	# Validar CPF
    	if ( !TUtils::CpfValidacao( $this->cpf ) )
    		throw new Exception("CPF inválido.");
    	
    	parent::salvar();
    		
    }
    
    /**
     * @return Vaga
     */
    public function getVagaAtual(){
    	$vaga = null;
    	$sql = "SELECT vagaid FROM candidatovaga WHERE ativo = TRUE AND candidatoid = ".$this->candidatoid;
		$result = TUtils::CriarResultSet($sql);
		if(pg_num_rows($result)>0){
			$object = pg_fetch_object( $result );
			$vaga = new Vaga($object->vagaid);
		}
		else {
		    $vaga = new Vaga();
		}
		return $vaga;	
    }
    
    /**
     * @return CandidatoVaga
     */
    public function getCandidatoVagaAtual(){
    	$candidatoVaga = null;
    	$sql = "SELECT candidatovagaid FROM candidatovaga WHERE ativo = true AND candidatoid = ".$this->candidatoid;
		$result = TUtils::CriarResultSet($sql);
		if(pg_num_rows($result)>0){
			$object = pg_fetch_object( $result );
			$candidatoVaga = new CandidatoVaga($object->candidatovagaid);
		}
		return $candidatoVaga;
    }
    
    public function candidatoByCpf( $cpf ){
    	
    	# Desmascarar Cpf
		$cpf = TUtils::CpfToNum( $cpf );
		
		$resultSet = $this->listar( array ( 'campos' => $this->getTableKey(), 'campo' => 'cpf', 'operador' => '=', 'valor' => $cpf ) );
                
		if ( !( pg_num_rows($resultSet) > 0 ) )
			return NULL;
		
		# Resultset
		$result = pg_fetch_object($resultSet);
		
		parent::__construct( $result->candidatoid );
		
	}
    
	public function getDadosConsist( $cpf = NULL )
	{
		//FIXME: Consist Desabilitado
		return false;
		
	    if ( $cpf == NULL ){
	        if ( $this->cpf ){
	            $cpf = $this->cpf;
	        }
	        else {
	            throw new Exception( 'Nenhum CPF informado.' );
	        }
	    }
	    
	    $cpf = TUtils::NumToCpf( $cpf );
	    
	    $sql = 'SELECT 
	    			*
				FROM 
					' . ViewConsultaConsist::tablename . ' 
				WHERE 
					cpf = \'' . $cpf . '\'
					AND folha IS NULL
	            ORDER BY dtcadastro DESC';
	    
	    $result = TSqlSelect::customSelect($sql);
	    
	    if ( pg_num_rows( $result ) > 0 ){
	        return pg_fetch_all( $result );
	    }
	    else {
	        return FALSE;
	    }
	    
	}
	
	public function getHistoricoSgc($vagaid = NULL) {
	    $vw = new ViewHistoricoSgc();
	    if (!$vagaid) {
	        $vaga = $this->getVagaAtual();
	        $vagaid = $vaga->vagaid;
	    }
	    $criterio = array();	    
	    $criterio['precondicao'] = $this->getTableKey() . ' = ' . $this->getTableKeyValue();
	    $criterio['orderBy'] = 'data';
	    $criterio['order'] = 'desc';
	    
	    return $vw->listar($criterio);
	}
	
	public function isContratado()
	{
	    if (!$this->getTableKeyValue()) {
	        return FALSE;
	    }
	    
	    $criterio = array();
	    $criterio['precondicao']  = 'candidatoid = ' . $this->getTableKeyValue();
	    $criterio['precondicao'] .= ' AND ativo IS TRUE';
	    
	    $candidatoVaga = new CandidatoVaga();
	    $result = $candidatoVaga->listar($criterio);
	    
	    if (pg_num_rows($result) > 0) {
	        return TRUE;
	    }
	    return FALSE;
	}
	
	public function getEscolaridade() {
	    return new Escolaridade($this->escolaridadeid);
	}
}
?>